[org 0x7c00]
KERNEL_OFFSET EQU 0x1000

mov bp, 0x9000
mov sp, bp

call clearScreen

mov bx, MSG_REAL_MODE
call print_str
call print_nl

call load_kernel

call switch_to_pm32


jmp $ ;hang 这个指令表示跳转到当前位置，也就是循环跳转当前位置，无限循环，防止cpu继续向下运行。


; include must bello the hang
%include "../lib/real_mode/asm/print.asm" 
%include "../lib/real_mode/asm/disk_load.asm"
%include "enter_pm32.asm"
%include "gdt_pm32.asm"
%include "../lib/32protected_mode/print_pm32.asm"
%include "load_kernel.asm"
%include "../lib/real_mode/asm/clear_screen.asm"






MSG_REAL_MODE db "Started in 16-bit real mode", 0


; times 表示当前指令执行多少次。
; $表示当前指令地址，$$表示起始地址，也就是0。
; db表示高速编译器在当前地址填入一个0
; 这行指令的意思就是当上述指令的长度不足510字节时，剩余的部分填入0
times  510-($-$$) db 0 

db 0x55,0xaa ; 这行的指令的意思是在511和512字节分别填入0x55，0xaa。这是BIOS对bootloader的要求，即512字节的最后两个字节必须是这两个数，以确实是有效的bootloader。


